//package com.yunhe.device.service.device;
//
//import com.yunhe.device.domain.device.Analog;
//import com.yunhe.device.domain.device.Device;
//import com.yunhe.common.exception.ArgumentErrorException;
//import com.yunhe.common.exception.ObjectNotFoundException;
//import com.yunhe.common.exception.UniqueConstraintsException;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.util.List;
//import java.util.Map;
//
///**
// * 设备Service
// * @desc 设备服务类定义
// * @author liuronglei
// */
//public interface DeviceService {
//
//    /**
//     * 新增设备
//     * @param energyUnitId 能量单元ID
//     * @param device 新增对象
//     */
//    @Transactional
//    Device createDevice(Long energyUnitId, Device device)
//            throws ArgumentErrorException, UniqueConstraintsException;
//
//    /**
//     * 批量新增设备
//     * @param energyUnitId 能量单元ID
//     * @param deviceList 设备列表
//     */
//    @Transactional
//    Iterable<Device> createDevice(Long energyUnitId, List<Device> deviceList)
//            throws ArgumentErrorException, UniqueConstraintsException;
//
//    /**
//     * 根据id删除设备
//     * @param energyUnitId 能量单元ID
//     * @param deviceId 设备ID
//     */
//    @Transactional
//    void deleteDevice(Long energyUnitId, Long deviceId);
//
//    /**
//     * 更新设备（更新全部字段）
//     * @param device 要更新的设备对象
//     */
//    @Transactional
//    Device updateDevice(Device device)
//            throws ArgumentErrorException, UniqueConstraintsException, ObjectNotFoundException;
//
//    /**
//     * 根据ID获得设备对象
//     * @param deviceId 设备ID
//     */
//    Device findByDeviceId(Long deviceId);
//
//    /**
//     * 根据code获得设备对象
//     * @param code code
//     */
//    Device findByCode(Long code);
//
//    /**
//     * 根据电站ID获得设备对象列表
//     * @param stationId 电站ID
//     */
//    Iterable<Device> findByStationId(Long stationId);
//
//    /**
//     * 根据电站ID获得设备对象列表（带分类）
//     * @param stationId 电站ID
//     */
//    Map<String, List<Object>> findByStationIdForGroup(Long stationId);
//
//    /**
//     * 根据电站ID和设备类型获得设备对象列表
//     * @param stationId 电站ID
//     * @param type 设备类型
//     */
//    Iterable<Device> findByStationIdAndType(Long stationId, String type);
//
//    /**
//     * 根据能量单元ID获得设备对象列表
//     * @param energyUnitId 能量单元ID
//     */
//    Iterable<Device> findByEnergyUnitId(Long energyUnitId);
//
//    /**
//     * 根据单位ID获得设备对象列表
//     * @param firmId 单位ID
//     */
//    Iterable<Device> findByFirmId(Long firmId);
//
//    /**
//     * 根据能量单元ID获得设备对象列表（带分类）
//     * @param energyUnitId 能量单元ID
//     */
//    Map<String, List<Object>> findByEnergyUnitIdForGroup(Long energyUnitId);
//
//    /**
//     * 根据能量单元ID和设备类型获得设备对象列表
//     * @param energyUnitId 能量单元ID
//     * @param type 设备类型
//     */
//    Iterable<Device> findByEnergyUnitIdAndType(Long energyUnitId, String type);
//
//    /**
//     * 根据设备ID获得点号列表
//     * @param deviceId 设备ID
//     */
//    Iterable<Analog> findAnalogs(Long deviceId);
//
//    /**
//     * 根据设备ID和子设备标签以及点号类型获得点号列表
//     * @param deviceId 设备ID
//     * @param childType 子设备标签
//     * @param pdtCodeList 点号类型
//     */
//    Iterable<Analog> findChildAnalogs(Long deviceId,
//                                      String childType,
//                                      List<Long> pdtCodeList);
//
//    /**
//     * 根据设备ID获得其连接关系的指定设备类型的设备列表
//     * @param deviceId 设备ID
//     * @param type 设备类型
//     */
//    List<Device> findByConnectRelation(Long deviceId, String type);
//
//}
